/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gui;

import dao.DAOCadastroLei;
import java.util.ArrayList;
import java.util.List;
import modelo.Lei;
import negocio.Negocio;
import negocio.NegocioCadastroLei;

/**
 *
 * @author Jaedson (JKalashi)
 */
public class ControladorPesquisaLei implements Controlador {

    private UI ui;
    private Negocio negocioCadastroLei;
    private String texto;
    private JanelaResultadoPesquisa janelaResultadoPesquisa;

    public void setUiJanelaResultado(JanelaResultadoPesquisa jrp){
        janelaResultadoPesquisa = jrp;
    }

    public JanelaResultadoPesquisa getUiJanelaResultado(){
        return janelaResultadoPesquisa;
    }
    
    public ControladorPesquisaLei(){
        negocioCadastroLei = new NegocioCadastroLei();
        negocioCadastroLei.setDAO(new DAOCadastroLei());
    }

    public UI getUI() {
        return ui;
    }

    public void setUI(UI ui) {
        this.ui = ui;
    }

    public void inserir(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void alterar(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void excluir(Object o) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void pesquisar() {
        List<Object> resultado = new ArrayList<Object>();
        resultado = negocioCadastroLei.pesquisar();
        if (resultado.isEmpty()) {
            ui.exibirMensagemErro("Nenhum resultado foi encontrado.");
        } else {
            ui.exibirMensagem("Pesquisa efetuada com sucesso");
            List<Lei> leis = new ArrayList<Lei>();
            for (Object object : resultado) {
                Lei l = (Lei) object;
                if(texto == null){
                    texto = montarPesquisa(l);
                }else{
                  texto += montarPesquisa(l);
                }
            }
            ui.mostrarObjeto(texto);
        }
        texto = null;
    }

    public void pesquisar(Object o) {
        List<Object> resultado = new ArrayList<Object>();
        resultado = negocioCadastroLei.pesquisar(o);
        if (resultado.isEmpty()) {
            ui.exibirMensagemErro("Nenhum resultado foi encontrado.");
        } else {
            //ui.exibirMensagem("Pesquisa efetuada com sucesso");
            /*List<Lei> leis = new ArrayList<Lei>();
            for (Object object : resultado) {
                Lei l = (Lei) object;
                if(texto == null){
                    texto = montarPesquisa(l);
                }else{
                  texto += montarPesquisa(l);
                }
            }
            ui.mostrarObjeto(texto);*/
            janelaResultadoPesquisa.mostrarObjetos(resultado);
        }
        texto = null;
    }

    public String montarPesquisa(Lei l) {
        String n;
        n = "Numero da Lei: "+ l.getNumeroLei() + "\r\n" +
                "Numero Processo: "+ l.getProcesso()+ "\r\n" +
                "Ementa : " + l.getEmenta() + "\r\n" +
                "Descrição da Lei: \r\n" + l.getTexto() + "\r\n" +
                "Numero da Lei que revoga: " + l.getNumeroLeiRevoga() + "\r\n" +
                "---------------------------------------\r\n";

        return n;
    }

    public void setJanelaResultado(JanelaResultadoPesquisa janelaResultadoPesquisa) {
        this.janelaResultadoPesquisa = janelaResultadoPesquisa;
    }

    public void setJanelaModificarLei(JanelaModificarLei janelaModificarLei) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean numeroLeiUnica(String numeroLei) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public boolean existObject(Lei lei) {
        return negocioCadastroLei.existObject(lei);
    }


}
